# 文件的编码 UTF-8
# open()打开函数——使用open() 函数，可以打开一个已经存在的文件，或者创建一个新文件
# 语法:open(name,mode,encoding)
# name:目标文件名
# mode:设置打开文件的模式
# encoding:编码格式——UTF-8
# 打开文件
import time

f = open("E:/Test/test.txt","r",encoding="UTF-8")
print(type(f))

# 读取文件
# read() 方法——文件对象.read(num)
print(f"读取10个字节的结果:{f.read(10)}")       # 连续调用两次 read 函数，后一个会接着前一个继续读取内容
print(f"读取全部内容的结果:{f.read()}")
f.close()

# readlines() 方法——读取文件的全部行封装到列表中
f = open("E:/Test/test.txt","r",encoding="UTF-8")
print(f"读取文件的全部行内容是:{f.readlines()},类型是:{type(f.readlines())}")
f.close()

# readline() 方法——读取文件的一行封装到列表中
f = open("E:/Test/test.txt","r",encoding="UTF-8")
line_1 = f.readline()
print(f"读取到的第一行数据是:{line_1}")
line_2 = f.readline()
print(f"读取到的第二行数据是:{line_2}")
f.close()

# for 循环读取文件行
f = open("E:/Test/test.txt","r",encoding="UTF-8")
for line in f:
    print(f"每一行的数据是:{line}")
f.close()

# 关闭文件——close()——带有flush()方法的功能

# with open()——打开的文件可以自动关闭
f = open("E:/Test/test.txt","r",encoding="UTF-8")
with open("E:/Test/test.txt","r",encoding="UTF-8") as f:
    for line in f:
        print(f"每一行的数据是:{line}")


# 文件的写操作——open,write,flush      w 模式——文件存在，会清空原有内容；文件不存在，会创建新文件
f = open("E:/Test/test.txt","w",encoding="UTF-8")
f.write("abcdefg")
f.flush()
f.close()
with open("E:/Test/test.txt","r",encoding="UTF-8") as f:
    for line in f:
        print(f"每一行的数据是:{line}")

# 文件的追加操作
with open("E:/Test/test.txt","a",encoding="UTF-8") as f:
    f.write("\nhijklmn")
    f.flush()
with open("E:/Test/test.txt","r",encoding="UTF-8") as f:
    for line in f:
        print(f"每一行的数据是:{line}")